Desktop tətbiq#

alqor işlət 06-desktop.alq            pəncərəni açır
alqor işlət 06-desktop.alq -- sınaq   pəncərə açmadan yoxlayır

Necə işlətmək#

PowerShell
alqor işlət numuneler\06-desktop.alq

Studio-da: faylı açın və F5 basın. Nümunələr ilk açılışda Sənədlər\Alqor\nümunələr qovluğuna kopyalanır.

Kod#

Alqor
// Nümunə 6 — Desktop tətbiq
//
//   alqor işlət 06-desktop.alq            pəncərəni açır
//   alqor işlət 06-desktop.alq -- sınaq   pəncərə açmadan yoxlayır

gətir pəncərə
gətir pəncərə.dialoq
gətir fayl

komponent Sayğac
    vəziyyət say: tam = 0
    vəziyyət tarixçə: siyahı[tam] = []

    hesablanan cəmi: tam
        qaytar özü.tarixçə.cəm()
    son

    metod artır()
        özü.say += 1
        özü.tarixçə.əlavə(özü.say)
    son

    metod azalt()
        özü.say -= 1
        özü.tarixçə.əlavə(özü.say)
    son

    metod sıfırla()
        əgər dialoq.təsdiqlə("Sıfırlansın?", "Tarixçə də silinəcək") onda
            özü.say = 0
            özü.tarixçə = []
        son
    son

    metod saxla()
        varsa yol = dialoq.faylSaxla(standartAd: "sayğac.txt") onda
            fayl.yaz(yol, özü.tarixçə.çevir(mətnƏt).birləşdir("\n"))
            pəncərə.bildiriş("Saxlanıldı", "Fayl: {yol}")
        son
    son

    göstər()
        qaytar <div sinif="sayğac">
            <h1>{özü.say}</h1>
            <div sinif="düymələr">
                <button klik={özü.azalt}>-</button>
                <button klik={özü.artır}>+</button>
                <button klik={özü.sıfırla}>Sıfırla</button>
            </div>
            <p>Addım sayı: {uzunluq(özü.tarixçə)} | Cəmi: {özü.cəmi}</p>
        </div>
    son
son

funksiya pəncərəniQur() -> istənilən
    dəyişən s = yeni Sayğac()
    dəyişən p = yeni pəncərə.Pəncərə("Sayğac", 400, 300)

    p.menyu([
        pəncərə.menyu("Fayl", [
            pəncərə.element("Saxla...", qısayol: "Ctrl+S", klik: s.saxla),
            pəncərə.ayırıcı(),
            pəncərə.element("Çıxış", qısayol: "Ctrl+Q",
                            klik: () => p.bağla())
        ])
    ])

    // Xam çoxsətirli mətn: CSS-dəki `{...}` interpolyasiya sayılmır
    p.üslub(x"""
        .sayğac{text-align:center;padding-top:24px}
        .sayğac h1{font-size:72px;margin:0}
        .düymələr{display:flex;gap:8px;justify-content:center}
    """)

    p.məzmun(<Sayğac />)
    p.mərkəzə()
    qaytar p
son

// ═══════════════════════════════════════════════════════════════
//  Pəncərə açmadan yoxlama — `pəncərə.sınaq`
// ═══════════════════════════════════════════════════════════════

funksiya yoxla(p: istənilən)
    dəyişən s = pəncərə.sınaq.aç(p)

    yaz("── Pəncərə yoxlaması ──")
    yaz("Başlıq      : {s.başlıq()}")
    yaz("İlk vəziyyət: {s.mətn()}")

    s.klik("+")
    s.klik("+")
    s.klik("+")
    yaz("Üç dəfə +   : {s.mətn()}")

    s.klik("-")
    yaz("Bir dəfə -  : {s.mətn()}")

    // Dialoqun cavabını əvvəlcədən veririk
    pəncərə.sınaq.cavablar([yanlış])
    s.klik("Sıfırla")
    yaz("Sıfırla/xeyr: {s.mətn()}")

    pəncərə.sınaq.cavablar([doğru])
    s.klik("Sıfırla")
    yaz("Sıfırla/bəli: {s.mətn()}")

    yaz("Dialoqlar   : {uzunluq(pəncərə.sınaq.jurnal())} dəfə soruşuldu")

    s.klik("Çıxış")
    yaz("Çıxışdan son: açıqdır = {s.açıqdır()}")
son

funksiya əsas(arqumentlər: siyahı[mətn])
    dəyişən p = pəncərəniQur()

    əgər "sınaq" içindədir arqumentlər onda
        yoxla(p)
        qaytar
    son

    p.göstər()
    yaz("Pəncərə açıldı ({pəncərə.aparıcı()}): {p.ünvan()}")
    pəncərə.işlət()
son